/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package dao;

import java.util.List;
import javax.ejb.Stateless;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
import pojo.Pessoa;

/**
 *
 * @author Edvania
 */
@Stateless
public class DaoPessoa implements DaoPessoaLocal {

    @PersistenceContext
    private EntityManager manager;

    @Override
    public Pessoa salvar(Pessoa pessoa) throws Exception {

        try {
            pessoa = this.manager.merge(pessoa);
            this.manager.flush();
        } catch (Exception e) {
            throw new Exception("Erro desconhecido ao salvar. " + e.getMessage());
        }

        return pessoa;
    }

    @Override
    public List<Pessoa> pesquisarNome(String nome) {
        return this.manager.createNamedQuery("Pessoa.findByNome").setParameter("nome", "%" + nome + "%").getResultList();

    }

    @Override
    public void excluir(Pessoa pessoa) throws Exception {
        Pessoa p;
        p = this.manager.find(Pessoa.class, pessoa.getIdPessoa());


        if (p == null) {
            throw new Exception("Nenhum registro com o id informado, tente buscar o registro novamente.");
        }
        try {
            this.manager.remove(p);
            this.manager.flush();
        } catch (Exception e) {
            if (e.getMessage().contains("Code: 1451")) {
                throw new Exception("Registro utilizado em outra tabela.");
            } else {
                throw new Exception("Erro desconhecido ao excluir.");
            }
        }
    }

    public List<Pessoa> buscaNomesPessoa(String nome) {
        return this.manager.createNamedQuery("Pessoa.findByNome").setParameter("nome", "%" + nome + "%").getResultList();
    }
}
